<?php
/**
 * Created by PhpStorm.
 * User: ownfi
 * Date: 2017-03-23
 * Time: 13:46
 */

namespace App\Services;
use App\Models\Order;
use App\Models\OrderDetail;
use App\Models\OrderGoods;
use App\Models\OrderStatus;

/**
 * 订单相关
 * Interface IOrderService
 * @package App\Services
 */
interface IOrderService
{

    /**
     * 根据地区列出待报价中的订单
     * @return mixed
     */
    public function listOffering(array $areaIds);

    /**
     * 取得匹配师傅服务地区的待报价中的订单列表
     * @return mixed
     */
    public function listMatchingOffering($master_id);

    /**
     * 根据地区取得待报价中的订单总数
     * @return mixed
     */
    public function countOffering(array $areaIds);

    /**
     * 取得匹配师傅服务地区的待报价中的订单总数
     * @return integer
     */
    public function countMatchingOffering($master_id);

    /**
     * 取得订单所有信息
     * @param $orderId
     * @return mixed
     */
    public function getOrderAllInfoById($orderId);

    /**
     * 取得订单详情
     * @param $orderId
     * @return mixed
     */
    public function getOrderDetailById($orderId);

    /**
     * 取得订单基础信息
     * @param $orderId
     * @return mixed
     */
    public function getOrderById($orderId);

    /**
     * 预加载订单所有信息
     * @param Order $order
     * @return mixed
     */
    public function loadOrderAllInfo(Order $order);

    /**
     * 预加载订单详情
     * @param Order $order
     * @return mixed
     */
    public function loadOrderDetail(Order $order);

    /**
     * 预加载订单退款信息
     * @param Order $order
     * @return mixed
     */
    public function loadOrderRefund(Order $order);

    /**
     * 取得师傅对某个订单的报价信息
     * @param $orderId
     * @param $masterId
     * @return mixed
     */
    public function getOffer($orderId, $masterId);

    /**
     * 某个师傅的已报价订单列表
     * @param $masterId
     * @return mixed
     */
    public function listMasterOffered($masterId,&$page = 1);

    /**
     * 某个师傅的服务中订单总数
     * @param $masterId
     * @return mixed
     */
    public function countServing($masterId);

    /**
     * 某个师傅的服务中订单列表
     * @param $masterId
     * @return mixed
     */
    public function listMasterServing($masterId,$page = 1);

    /**
     * 某个师傅的已完成订单总数
     * @param $masterId
     * @return mixed
     */
    public function countFinished($masterId);

    /**
     * 某个师傅的已完成订单列表
     * @param $masterId
     * @return mixed
     */
    public function listMasterFinished($masterId,$page = 1);

    /**
     * 某个师傅的全部订单总数，包括商家选定该师傅雇佣后所有正常状态、异常状态的订单
     * @param $masterId
     * @return mixed
     */
    public function countAll($masterId);

    /**
     * 某个师傅的全部订单列表，包括商家选定该师傅雇佣后所有正常状态、异常状态的订单
     * @param $masterId
     * @return mixed
     */
    public function listMasterAll($masterId,&$page = 1);

    /**
     * 提交报价
     * @param $order_id
     * @param $master_id
     * @param $price
     * @param null $message
     * @return mixed
     */
    public function giveOffer($order_id,$master_id,$price,$message = null);

    /**
     * 预约上门时间
     * @param $order_id
     * @param $door_time
     * @return mixed
     */
    public function appoint($order_id,$door_time);

    /**
     * 物流提货
     * @param $order_id
     * @param $door_time
     * @return mixed
     */
    public function delivery($order_id,$delivery_status,array $deliver_imgs_mediaId,$deliver_except = null);

    /**
     * 验证服务确认码是否匹配
     * @param $order_id
     * @param $confirm_code
     * @return mixed
     */
    public function verifyConfirmCode($order_id,$confirm_code);

    /**
     * 提交完成服务申请
     * @param $order_id
     * @param array $finish_imgs
     * @param $finish_ticket_img
     * @param null $tmall_check_img
     * @param null $finish_message
     * @return mixed
     */
    public function applyFinish($order_id,array $finish_imgs,$finish_ticket_img,$tmall_check_img = null,$finish_message = null);

    /**
     * 师傅对订单备注
     * @param $order_id
     * @param $master_id
     * @param $mark
     * @return mixed
     */
    public function mark($order_id,$master_id,$mark);

    /**
     * 获取师傅的订单评价待回复的列表
     * @param $master_id
     * @return mixed
     */
    public function listEvaluateWaiting($master_id);

    /**
     * 获取师傅的订单评价全部列表
     * @param $master_id
     * @return mixed
     */
    public function listEvaluateAll($master_id);

    /**
     * 师傅对评价回复
     * @param $order_id
     * @param $master_id
     * @param $mark
     * @return mixed
     */
    public function reply($order_id,$reply);

    /**
     * 检查订单服务确认码是否正确
     * @param $order_id
     * @param $confirm_code
     * @return mixed
     */
    public function checkConfirmCode($order_id,$confirm_code);

    /**
     * 获取投诉总数，包括核实中和已处理
     */
    public function getComplainCount($master_id);

    /**
     * 获取核实中的投诉列表
     * @return mixed
     */
    public function getComplainWaitingList($master_id);

    /**
     * 获取已处理的投诉列表
     * @return mixed
     */
    public function getComplainHandledList($master_id);

    /**
     * 列出补款明细
     * @return mixed
     */
    public function replenishList($order_id);
}